package com.library.utils;

public class StringUtils {

    /**
     * 获取字符串的终端显示长度
     *
     * @param str 要计算的字符串
     * @return 实际显示宽度
     */
    public static int getDisplayLength(String str) {
        if (str == null || str.isEmpty()) {
            return 0;
        }

        int length = 0;
        for (char c : str.toCharArray()) {
            // 判断是否为全角字符（中文+全角符号）
            if (isFullWidthChar(c)) {
                length += 2; // 全角占2个宽度
            } else {
                length += 1; // 半角占1个宽度
            }
        }
        return length;
    }

    private static boolean isFullWidthChar(char c) {
        return (c >= '\u4E00' && c <= '\u9FA5') // 中文
                || (c >= '\uFF00' && c <= '\uFFEF') // 全角符号（！、￥、。等）
                || c == '\u3000'; // 全角空格
    }
}
